package com.situ.skymall.user.api.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.situ.model.CnRegionInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 地区信息 Mapper 接口
 */
@Mapper
public interface CnRegionInfoMapper extends BaseMapper<CnRegionInfo> {

    /**
     * 根据父级ID查询子地区列表
     */
    List<CnRegionInfo> selectByParentId(@Param("parentId") Integer parentId);

    /**
     * 根据上级代码查询地区列表
     */
    List<CnRegionInfo> selectBySuperiorCode(@Param("superiorCode") String superiorCode);

    /**
     * 根据地区级别查询列表
     */
    List<CnRegionInfo> selectByLevel(@Param("level") Integer level);

    /**
     * 根据地区名称模糊查询
     */
    List<CnRegionInfo> selectByNameLike(@Param("name") String name);

    /**
     * 根据代码查询地区信息（包括父级信息）
     */
    CnRegionInfo selectWithParentByCode(@Param("code") String code);

    /**
     * 查询所有省份列表
     */
    @Select("SELECT * FROM t_cn_region_info WHERE CRI_LEVEL = 1 ORDER BY CRI_SORT")
    List<CnRegionInfo> selectAllProvinces();

    /**
     * 根据省份代码查询下属城市
     */
    @Select("SELECT * FROM t_cn_region_info WHERE CRI_PARENT_ID = #{provinceCode} ORDER BY CRI_SORT")
    List<CnRegionInfo> selectCitiesByProvince(@Param("provinceCode") String provinceCode);

    /**
     * 根据城市代码查询下属区县
     */
    @Select("SELECT * FROM t_cn_region_info WHERE CRI_PARENT_ID = #{cityCode} ORDER BY CRI_SORT")
    List<CnRegionInfo> selectDistrictsByCity(@Param("cityCode") String cityCode);
}